/**
 * 中国象棋游戏配置常量
 */

// 游戏状态枚举
export const GAME_STATUS = {
  PLAYING: 'playing',
  CHECKMATE: 'checkmate', // 将死
  STALEMATE: 'stalemate', // 困毙
  DRAW: 'draw',           // 和棋
  RESIGN: 'resign'        // 认输
};

// 移动结果类型
export const MOVE_RESULT = {
  VALID: 'valid',
  INVALID: 'invalid',
  CHECK: 'check',         // 将军
  CHECKMATE: 'checkmate', // 将死
  CAPTURE: 'capture'      // 吃子
};

// 游戏模式
export const GAME_MODE = {
  HUMAN_VS_HUMAN: 'human_vs_human',
  HUMAN_VS_AI: 'human_vs_ai',
  AI_VS_AI: 'ai_vs_ai'
};

// AI难度等级
export const AI_DIFFICULTY = {
  BEGINNER: {
    level: 1,
    depth: 1,
    name: '入门',
    description: '随机移动，适合初学者',
    randomFactor: 0.8 // 80%随机性
  },
  EASY: {
    level: 2,
    depth: 2,
    name: '简单',
    description: '基础AI，休闲娱乐',
    randomFactor: 0.3 // 30%随机性
  },
  MEDIUM: {
    level: 3,
    depth: 3,
    name: '中等',
    description: '有一定策略性',
    randomFactor: 0.1 // 10%随机性
  },
  HARD: {
    level: 4,
    depth: 4,
    name: '困难',
    description: '需要认真思考',
    randomFactor: 0.05 // 5%随机性
  },
  EXPERT: {
    level: 5,
    depth: 5,
    name: '专家',
    description: '高手级别，很有挑战性',
    randomFactor: 0 // 无随机性
  },
  MASTER: {
    level: 6,
    depth: 6,
    name: '大师',
    description: '顶级AI，极具挑战性',
    randomFactor: 0 // 无随机性
  },
  GRANDMASTER: {
    level: 7,
    depth: 7,
    name: '特级大师',
    description: '终极挑战，AI巅峰',
    randomFactor: 0 // 无随机性
  }
};

// 棋盘配置
export const BOARD_CONFIG = {
  // 渲染配置
  CELL_SIZE: 60,           // 格子大小(px)
  PIECE_SIZE: 50,          // 棋子大小(px)
  BOARD_PADDING: 20,       // 棋盘边距(px)
  LINE_WIDTH: 2,           // 线条宽度(px)
  
  // 颜色配置
  COLORS: {
    BOARD_BG: '#F5DEB3',      // 棋盘背景色
    LINE_COLOR: '#8B4513',     // 线条颜色
    SELECTED_BG: '#FFD700',    // 选中背景色
    VALID_MOVE: '#90EE90',     // 可移动位置颜色
    CHECK_WARNING: '#FF6B6B',  // 将军警告色
    LAST_MOVE: '#DDA0DD'       // 上一步移动颜色
  },
  
  // 动画配置
  ANIMATION: {
    MOVE_DURATION: 300,        // 移动动画时长(ms)
    HIGHLIGHT_DURATION: 200,   // 高亮动画时长(ms)
    EASING: 'ease-out'         // 缓动函数
  }
};

// 音效配置
export const SOUND_CONFIG = {
  ENABLED: true,
  VOLUME: 0.7,
  SOUNDS: {
    MOVE: '/sounds/chess/move.mp3',
    CAPTURE: '/sounds/chess/capture.mp3',
    CHECK: '/sounds/chess/check.mp3',
    CHECKMATE: '/sounds/chess/checkmate.mp3',
    BUTTON_CLICK: '/sounds/chess/click.mp3'
  }
};

// 计时器配置
export const TIMER_CONFIG = {
  DEFAULT_TIME: 600,  // 默认时间10分钟(秒)
  TIME_MODES: [
    { name: '快棋', time: 300 },   // 5分钟
    { name: '标准', time: 600 },   // 10分钟
    { name: '慢棋', time: 1200 },  // 20分钟
    { name: '不限时', time: 0 }     // 无限制
  ],
  WARNING_TIME: 60,   // 警告时间(秒)
  CRITICAL_TIME: 10   // 危险时间(秒)
};

// 存档配置
export const SAVE_CONFIG = {
  MAX_SAVES: 10,           // 最大存档数量
  AUTO_SAVE: true,         // 自动存档
  AUTO_SAVE_INTERVAL: 30,  // 自动存档间隔(秒)
  SAVE_KEYS: {
    GAME_STATE: 'chess_game_state',
    SETTINGS: 'chess_settings',
    HISTORY: 'chess_history'
  }
};

// 输入配置
export const INPUT_CONFIG = {
  CLICK_TO_MOVE: true,     // 点击移动
  DRAG_TO_MOVE: true,      // 拖拽移动
  KEYBOARD_SUPPORT: false,  // 键盘支持
  DOUBLE_CLICK_TIME: 300   // 双击时间间隔(ms)
};

// 默认游戏设置
export const DEFAULT_SETTINGS = {
  gameMode: GAME_MODE.HUMAN_VS_AI,
  aiDifficulty: AI_DIFFICULTY.MEDIUM,
  soundEnabled: SOUND_CONFIG.ENABLED,
  soundVolume: SOUND_CONFIG.VOLUME,
  animationEnabled: true,
  showValidMoves: true,
  showLastMove: true,
  autoSave: SAVE_CONFIG.AUTO_SAVE,
  timeLimit: TIMER_CONFIG.DEFAULT_TIME,
  boardTheme: 'classic'
};
